Een DAL interface
Home

Een DAL interface

Een DAL interface

Hoe complexer het programma hoe meer je met abstracties gaat werken. Een klasse, die een interface implementeert, kan je op interface niveau aansturen. Als je een DAL maakt is het handig om daar een interface voor te schrijven die de meest elementaire functies beschrijft. Als je dan een nieuwe of andere type data provider er aan wilt hangen hoef je hier alleen maar een losse klasse voor te schrijven die aan de interface voldoet. Je hoeft dan verder niks meer in je code aan te passen op de declaratie van de interface na.

Probleem

Design

T klasse

In dit voorbeeld wijst de letter T op een type dat alleen bekend is in het programma dat de IDal methode oproept. De methode IDal kan werken met het voorbeeld van T alsof het een echt type is, maar dat is het niet.

De IDal interface weet niet voor welke entiteit die zal gebruikt worden. Dat weet alleen de Dal klasse die ervan overerft, bv. Dal.EventCategory. Dus moeten we een 'algemeen' object type in de declaratie in de interface gebruiken en dat is T.

We voegen de Message Eigenschap toe om feedback aan de gebruiker te kunnen geven.

De methoden ReadOne en Delete hebben als parameter een id. Daarin wordt de Id van de rij meegegeven die benaderd moet worden. De rest van de gegevens hebben we in die methoden niet nodig. We hebben we alle kolomgegevens nodig voor de methoden Update en Create en daarom hebben die als parameter een BLL object van de desbetreffende entiteit. De ReadOne methode retourneert een BLL object met alle kolom gegevens van de gevonden rij. De ReadAll methode retourneert een generieke lijst met voor elke rij in de tabel een BLL object.

Oplossing

using System.Collections.Generic;
namespace FricFrac.Dal
{
    interface IDal<T>
    {
        string Message { get; }
        int RowCount { get; }
        List<T> ReadAll();
        T ReadOne(int id);
        int Create(T bll);
        int Update(T bll);
        int Delete(int id);
    }
}

JI
2017-09-16 13:02:49